package com.splic.product.mapper;

import com.splic.product.domain.Product;
import com.splic.product.domain.ProductVersion;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 应用Mapper接口
 * 
 * @author singe
 * @date 2022-01-04
 */
@Repository
public interface ProductMapper 
{
    /**
     * 查询应用
     * 
     * @param id 应用主键
     * @return 应用
     */
    public Product selectProductById(Long id);

    /**
     * 查询应用列表
     * 
     * @param product 应用
     * @return 应用集合
     */
    public List<Product> selectProductList(Product product);

    /**
     * 新增应用
     * 
     * @param product 产品
     * @return 结果
     */
    public int insert(Product product);

    /**
     * 修改产品
     * 
     * @param product 产品
     * @return 结果
     */
    public int update(Product product);

    /**
     * 删除产品
     *
     * @param id 产品主键
     * @return 结果
     */
    public int deleteById(Long id);


    List<Product> getByIds(@Param("productIdSet") Set<Long> productIdSet);

    Product getByPackageKey(String packageKey);

    List<Product> selectProductByDeviceId(@Param("id") Long id);

    List<Product> selectProductByUserId(@Param("id") Long id);

    List<String> selectAddProductVersionList(@Param("id") Long id);

    ProductVersion getVersionByPackageKey(@Param("packageKey") String packageKey, @Param("isTest") Integer isTest);

    @MapKey("id")
    List<Map<String, Object>> selectProductVersionById(@Param("id") Long id);

    ProductVersion selectVersionByVersionId(@Param("id") Long id);

    int insertVersion(ProductVersion version);

    int deleteVersion(@Param("ids") List<String> ids);

    int updateVersion(ProductVersion version);
}
